//
// Created by 32827 on 2023/11/28.
//
#include "user_recv_transmit.h"
/**
 * 结束本YzApplication事件循环
 * */
YZF_RESULT user_device_stop(){
    yz_status_sheet_set(YZ_FLAG_STOP,YZF_TRUE);
    yz_recv_transmit_reset();
    return YZF_OK;
}
/**
 * 本YzApplication的通讯初始化
 * */
void user_recv_transmit_init(){
    //初始化指示灯
    rcu_periph_clock_enable(RCU_GPIOA);
    YGPIO(GPIOA)
    YPIN(GPIO_PIN_1)
    yzf_gpio_open_clock_();
    yzf_gpio_set_PP_();
    yzf_gpio_set_HIGH_();

    YZ_RECV_TRANSMIT_LEW_LIGHT;
    gpio_mode_set(GPIOA,GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
    gpio_output_options_set(GPIOA,GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_2);
    gpio_mode_set(GPIOD,GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6);
    gpio_output_options_set(GPIOD,GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_6);

    rcu_periph_clock_enable(RCU_USART1);
    gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_2);
    gpio_af_set(GPIOD, GPIO_AF_7, GPIO_PIN_6);
    //初始化端口
    yz_uart_init(TRANSMIT_USART,YZF_UART_LENGTH_8,0,115200u,YZF_FALSE);

    //初始化接收中断
    yz_uart_receive_IT_init(TRANSMIT_USART);

    //recv transmit handler
    yz_recv_transmit_init((void *)TRANSMIT_USART);
    yz_recv_transmit_handler_set(0x000000FF,user_device_stop);
}
extern char transmit_buf[256];
/**
 * 数据处理回复函数
 * */
void user_recv_transmit_reply(const char *fmt, ...){
    int i;

    va_list arg;
    va_start(arg, fmt);
    i = vsprintf(transmit_buf, fmt, arg);
    va_end(arg);
    transmit_buf[i] = 0;

    yz_uart_transmit(TRANSMIT_USART,(uint8_t *)transmit_buf,i);
}